export default {
    //引入sdk，只在h5的环境下引入，以防止包过大影响性能
    // #ifdef H5
    var jweixin = require('jweixin-module');
    // #endif

    setWeixinShare(title, desc, imgUrl) {
        const _this = this;
        if (_this.isWeixin()) {
            const url = window.location.href;
            // 页面没有传分享缩略图时设置默认的分享缩略图，此处shareImg可改成您需要的
            const shareImg = window.location.origin + CONFIG.INFO.IMG_PATH + 'logo.png';
            _this.getJsApiData(['updateAppMessageShareData', 'updateTimelineShareData', () => {
                jweixin.updateAppMessageShareData({
                    title: title,
                    // CONFIG.INFO.SHARE_DESC为页面描述没有时设置默认的描述，可改成您需要的
                    desc: _this.validatenull(desc) ? CONFIG.INFO.SHARE_DESC : desc, // 分享描述
                    link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
                    imgUrl: _this.validatenull(imgUrl) ? shareImg : imgUrl, // 分享图标
                    success: res => {
                        console.log("res11: ", res);
                    },
                    fail: err => {
                        console.error("err22: ", err);
                    }
                }),
                    jweixin.updateTimelineShareData({
                        title: title, // 分享标题
                        link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
                        imgUrl: _this.validatenull(imgUrl) ? shareImg : imgUrl, // 分享图标
                        success: res => {
                            console.log("res33: ", res);
                        },
                        fail: err => {
                            console.error("err44: ", err);
                        },
                    })
            })
        } else {
            return false;
        }
    },

    // 获取分享配置签名，此处一般都是后端去调微信的接口，前端再调后端的接口获取
    getJsApiData(jsApiList, readyFc) {
        const _this = this;
        const url = window.location.href;
        // 接口地址和请求参数改为您需要的
        _this.getAPIData('https://web.cdmp.candocloud.cn/api/wechat/getconfig', 'GET', {
            account: 'gh_d08583fe3034', // 微信公众号账号，以gh_开头的
            url: url
        }, res => {
            // 由于这里后端返回的一整个字符串，所以需要二次重组获得，可忽略
            const str = res.data;
            const appId = str.substring(_this.findStr(str, '"', 2) + 1, _this.findStr(str,
                '"', 3));
            const timestamp = str.substring(_this.findStr(str, ':', 1) + 1, _this.findStr(
                str, ',', 1));
            let nonceStr = str.substring(_this.findStr(str, '"', 8) + 1, _this.findStr(str,
                '"', 9));
            let signature = str.substring(_this.findStr(str, '"', 12) + 1, _this.findStr(
                str, '"', 13));
            jweixin.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印
                appId: appId, // 必填，公众号的唯一标识
                timestamp: timestamp, // 必填，生成签名的时间戳
                nonceStr: nonceStr, // 必填，生成签名的随机串
                signature: signature, // 必填，签名
                jsApiList: jsApiList // 必填，需要使用的 JS 接口列表
            });
            jweixin.ready(() => {
                // 将成功的函数返回
                readyFc();
            });
            jweixin.error((e) => {
                //_this.showToast(e || '分享失败');
                console.log(e, '失败信息')
            })
        }, err => {
            console.error('接口请求失败', err);
        });
    },

    // 判断是否是微信浏览器，只在微信浏览器调用分享配置
    isWeixin() {
        const ua = navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == 'micromessenger') {
            return true;
        } else {
            return false;
        }
    },

    // 判断页面传递的参数是否为空
    validatenull: function (val) {
        if (typeof val === 'boolean') {
            return false
        }
        if (typeof val === 'number') {
            return false
        }
        if (val instanceof Array) {
            if (val.length === 0) return true
        } else if (val instanceof Object) {
            if (JSON.stringify(val) === '{}') return true
        } else {
            if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '')
                return true
            return false
        }
        return false
    },

    // 通过指定字符串的位置截取字符串，不需要这步操作可忽略
    findStr(str, cha, num) {
        var x = str.indexOf(cha);
        for (var i = 0; i < num; i++) {
            x = str.indexOf(cha, x + 1);
        }
        return x;
    }

}